Skip to content

feat(app): enable the supported relay by default - #921

Merged
frahlg merged 4 commits into
masterfrom
agent/default-app-link-on
Aug 17, 2026
Merged

feat(app): enable the supported relay by default#921
frahlg merged 4 commits into
masterfrom
agent/default-app-link-on

Conversation

@frahlg

@frahlg frahlg commented Aug 16, 2026

Copy link
Copy Markdown
Member

What changes

  • Treat an omitted app_link section as enabled, so upgraded boxes use the supported FTW app relay without a YAML edit.
  • Preserve app_link.enabled: false, YAML app_link: / null / {}, and JSON "app_link": null as opt-outs.
  • Keep the Settings fallback in step with Core and make the example config show the default.
  • State the privacy boundary plainly: relay frames are end-to-end encrypted, but the relay still sees source IP, timing, and connection continuity.
  • Update the app-uplink ADR to match the shipped pairing, device-removal, and owner rules.

The relay endpoint and protocol remain fixed. This change does not alter pairing keys, command checks, or hardware control.

Compatibility proof

The round-trip tests start with an old YAML file that has no app_link, load it, fetch it through GET /api/config, save that response through POST /api/config, read the file again, and prove the app link stays on after restart. Separate tests keep explicit false, YAML null and an empty section off. The API test proves JSON null is stored as an explicit opt-out and stays off after restart.

Verification

Head: e295fe48e8d44b49c326c256e8a2e40c0f09cf04

  • git range-diff: the first two feat(app): enable the supported relay by default #921 commits remain patch-identical after restacking on master 1acb8097ec51b12fa744ff65f525df4c280435c5.
  • Aggregate patch ID stayed 0407921a54957a6d82a38130181847ad4a71d9f9.
  • The old-client regression failed on parent 8af080f7: an omitted app_link produced a false app-link restart reason. It passes after the third commit, while explicit JSON null and false still turn the link off and require restart.
  • Exact head: focused cmd/ftw app-link API race tests passed 20 times.
  • Exact head: focused internal/config restart/app-link race tests passed 20 times.
  • Direct parent 8af080f7 passed all 340 web tests and make verify, including 167 optimizer tests, Go tests, compose migration, module boundaries, exact-image promotion, vet, and build. Exact-head GitHub checks must also pass before merge.

Human browser gate before merge

Serve this exact head from a box. Check both desktop at 1440 x 900 and a narrow mobile viewport at 390 x 844.

  • With an old config that omits app_link, Settings -> FTW app opens with the checkbox checked. Save and restart; it stays checked and the running status becomes available.
  • With app_link.enabled: false, and once with an empty or null YAML section, the checkbox opens unchecked. Save and restart; it stays off and no pairing action is enabled.
  • Toggle from on to off and from off to on. Before restart, the status text must say what is running now and what will change after restart. After restart, it must match the saved switch.
  • Read the privacy text in both widths. It must say that readings and commands are end-to-end encrypted, that Sourceful can see the IP and when the box is connected, and that Sourceful cannot read the frames. No line may clip or cause horizontal scroll.
  • When connected, Show pairing code becomes enabled. The owner explanation, QR, expiry line, and spoken-code fallback fit without clipping; the QR stays square and scans from the phone.
  • After one phone is paired, the phone row, role, last-seen text, Remove, and Let someone see this home fit and remain usable. The viewer QR and its access explanation also fit and scan.
  • On narrow mobile, the action buttons, device rows, warning dialog, QR, and spoken code remain inside the viewport and can be reached without content hiding behind the fixed navigation.

Do not merge until a human checks every box above.

Release order

#928 and #932 are already on master. Merge this PR only after the browser gate passes. Then let the release workflow refresh Version Packages PR #824 from the resulting master; do not merge the current #824 head first.

@frahlg
frahlg force-pushed the agent/default-app-link-on branch from 8dfaf61 to 00efc21 Compare August 16, 2026 17:36
@frahlg
frahlg marked this pull request as ready for review August 16, 2026 17:38

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 00efc21186

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread go/internal/config/config.go
@frahlg
frahlg force-pushed the agent/default-app-link-on branch from 00efc21 to 16cecec Compare August 16, 2026 17:47
@frahlg

frahlg commented Aug 16, 2026

Copy link
Copy Markdown
Member Author

@miravoss26 could you review exact head 16cecec0? It enables the supported relay by default while preserving explicit YAML null/false opt-outs. Focused tests, race, full make verify, full-stack CI, and all required GitHub checks are green. The one automated review finding is fixed and resolved.

@frahlg
frahlg force-pushed the agent/default-app-link-on branch from 16cecec to 84c5123 Compare August 16, 2026 18:38
@frahlg

frahlg commented Aug 16, 2026

Copy link
Copy Markdown
Member Author

@miravoss26 the exact relay-default diff is now rebased on master at 84c51238. Explicit app_link: / null / {} / enabled: false still stay off; an omitted key defaults on. Focused repeat and race tests plus full make verify passed locally. Please refresh review on this head; CI is running.

@frahlg

frahlg commented Aug 16, 2026

Copy link
Copy Markdown
Member Author

@codex review

@frahlg
frahlg requested a review from miravoss26 August 16, 2026 18:38

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 84c51238bb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread go/internal/config/config.go
@frahlg

frahlg commented Aug 16, 2026

Copy link
Copy Markdown
Member Author

@codex review

@miravoss26 please refresh review on exact head 98f2b25c. The JSON null opt-out finding is fixed and resolved; focused repeat/race, relevant package race, and full make verify are green.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: 98f2b25c95

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@frahlg
frahlg force-pushed the agent/default-app-link-on branch from 98f2b25 to 651e7a2 Compare August 16, 2026 19:03
@frahlg
frahlg force-pushed the agent/default-app-link-on branch from 651e7a2 to 8af080f Compare August 16, 2026 22:08
@frahlg

frahlg commented Aug 16, 2026

Copy link
Copy Markdown
Member Author

@codex review

@miravoss26 please review exact head 8af080f7c23d7b47a047a76aa36f95076496dff9. It is patch-identical to the previously reviewed two-commit diff, now on master 1acb8097ec51b12fa744ff65f525df4c280435c5. Exact-head race tests, all 340 web tests, and make verify are green. The PR must not merge until a human completes the desktop and narrow-mobile checklist in the body.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8af080f7c2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread go/internal/api/api.go
@frahlg

frahlg commented Aug 16, 2026

Copy link
Copy Markdown
Member Author

@codex review

@miravoss26 please review exact head e295fe48e8d44b49c326c256e8a2e40c0f09cf04. Fresh P2 is fixed in the third commit: restart comparison now uses effective AppLink.On() semantics. The old-client omission test was red on parent 8af080f7; omission/null/false API cases and focused cmd/config race tests now pass 20 times. Human desktop and narrow-mobile review remains a hard pre-merge gate.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e295fe48e8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread go/internal/config/config.go Outdated

frahlg commented Aug 17, 2026

Copy link
Copy Markdown
Member Author

@codex review

Exact head ee20ea88d69c5232e786c3a7f6d80a06bef50ee0 fixes the remaining YAML alias/merge opt-out finding. Old-red cases were alias-null and merged-null enabling AppLink. The final helper keeps ignored YAML subtrees opaque, follows only the selected value, and fails closed. Focused tests ×100, race ×20, full config race, and make verify pass. Human desktop and narrow-mobile review of the unchanged UI has been completed.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. You're on a roll.

Reviewed commit: ee20ea88d6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@frahlg
frahlg merged commit b6ee4e3 into master Aug 17, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant